﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Greenshot2Core.Interfaces {
	public interface IGreenshotPlugin {
		/// <summary>
		/// Initialize the plugin
		/// </summary>
		bool Initialize();

		/// <summary>
		/// Unload of the plugin
		/// </summary>
		void Shutdown();

		/// <summary>
		/// Open the Configuration Form, will/should not be called before handshaking is done
		/// </summary>
		void Configure();

		/// <summary>
		/// Return IDestination's, if the plugin wants to
		/// </summary>
		IEnumerable<IDestination> Destinations();

		/// <summary>
		/// Return IProcessor's, if the plugin wants to
		/// </summary>
		IEnumerable<IProcessor> Processors();

		string Name {
			get;
		}
	}
}